{% extends 'base.html' %} {% block content %}
{{ run._timestamp or run._file }}

Run: {{ run._file }}

Final Solution
Answer ID: {{ run.final_answer_id }}
Winning agents: {{ run.winning_agents|join(', ') }} {% if run.origin_agents %} Origin: {{ run.origin_agents|join(', ') }}{% if run.holders_history %} (first seen round {{ (run.holders_history.keys()|list|map('int')|min) }}){% endif %} {% endif %} {% set total_rounds = (run.transcript|length) - 1 %} Rounds: {{ total_rounds if total_rounds > 0 else 0 }} {% if run.scores and run.final_answer_id in run.scores %} Score: {{ '%.2f'|format(run.scores[run.final_answer_id]) }} {% endif %}
{{ run.final_solution or '(empty)' }}
{% set m = run.metrics or {} %}
Winner Score
{% set ws = (run.scores[run.final_answer_id] if run.scores and run.final_answer_id in run.scores else 0) %}
{{ '%.2f'|format(ws) }}
Higher is better (contribution-adjusted)
{% set ar = m.agreement_rate or 0 %} {% set ar_label = 'Unanimous' if ar == 1 else ('Strong' if ar >= 0.8 else ('Mixed' if ar >= 0.5 else 'Divided')) %}
Agreement Rate
{{ '%.0f'|format(ar*100) }}%
{{ ar_label }} alignment
{% set oc = m.opinion_changes or 0 %} {% set oc_label = 'Stable' if oc == 0 else ('Some churn' if oc <= 2 else 'Churny') %}
Opinion Changes
{{ oc }}
{{ oc_label }} debate
Rounds
{{ m.num_rounds or 0 }}
Executed critiques
{% set sd = m.deadline_soft_hits or 0 %}
Soft Deadlines
{{ sd }}
Quorum waits
{% set hd = m.deadline_hard_hits or 0 %}
Hard Deadlines
{{ hd }}
Cut-offs
Hover ⓘ for details and quick interpretation guides.

Solution & Reasoning Viewer


  

Why this answer won

{% set chain = run.selection_explanation.chain or [] %}
    {% for step in chain %}
  1. {{ step.step }} — winner set: {{ step.winners|join(', ') }} {% if step.value is defined %}(value: {{ step.value }}){% endif %}
  2. {% endfor %}

Validation Results

{% set vr = run.validation %} {% if vr %} {% for ans_id, validators in vr.items() %}
Answer {{ ans_id }}
{% for name, res in validators.items() %} {% endfor %}
ValidatorPassedConfidence
{{ name }}{{ res.passed }}{{ res.confidence }}
{% endfor %} {% else %}
No validation records.
{% endif %}

Debate Timeline

{% if run.round_groups %} {% for g in run.round_groups %}
Round {{ g.round }} — {{ g.type }} changed: {{ g.changed_count }}
{% for e in g.events %}
Agent {{ e.agent_id }} — decision: {{ e.decision }} — changed: {{ e.changed }}
{% if e.reasoning %}
Reasoning
{{ e.reasoning }}
{% endif %} {% if e.changed and e.diff %}
Diff (prev → new)
{{ e.diff }}
{% elif e.solution and e.round == 0 %}
Initial Solution
{{ e.solution }}
{% endif %}
{% endfor %}
{% endfor %} {% else %}
No timeline available.
{% endif %}
{% set rounds = run.transcript %} {% set mid = ((rounds|length) + 1) // 2 %}

Per-round Snapshot (1)

{% for r in rounds[:mid] %} {% endfor %}
RoundTypeDeadline FlagsAgents
{{ r.round }} {{ r.type }} soft={{ r.deadline_hit_soft }} hard={{ r.deadline_hit_hard }}
    {% for aid, rec in r.agents.items() %}
  • {{ aid }} — decision: {{ rec.response.decision }}, changed: {{ rec.response.changed }} — peers_seen: {{ rec.peers_seen_count }}, peers_assigned: {{ rec.peers_assigned_count }}
  • {% endfor %}

Per-round Snapshot (2)

{% for r in rounds[mid:] %} {% endfor %}
RoundTypeDeadline FlagsAgents
{{ r.round }} {{ r.type }} soft={{ r.deadline_hit_soft }} hard={{ r.deadline_hit_hard }}
    {% for aid, rec in r.agents.items() %}
  • {{ aid }} — decision: {{ rec.response.decision }}, changed: {{ rec.response.changed }} — peers_seen: {{ rec.peers_seen_count }}, peers_assigned: {{ rec.peers_assigned_count }}
  • {% endfor %}
{% endblock %}